package org.i1510.spider.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;

import org.i1510.common.bean.PageBean;
import org.i1510.common.utils.StringUtils;
import org.i1510.common.utils.web.ResultMapper;
import org.i1510.common.utils.web.WebUtils;
import org.i1510.spider.bean.SpiderRule;
import org.i1510.spider.bean.SysSpiderRuleBean;
import org.i1510.spider.dao.ISysSpiderDao;
import org.i1510.spider.po.SysSpider;
import org.i1510.spider.service.ISysSpiderService;
import org.i1510.spider.utils.spider.SpiderRuleRun;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;






@Controller
@RequestMapping(value = "/admin/spider")
public class SysSpiderController {
	private static final Logger logger = LoggerFactory.getLogger(SysSpiderController.class);
	@Autowired
	private ISysSpiderService iSysSpiderService;
	@Autowired
	private ISysSpiderDao iSysSpiderDao;
	
	private ResultMapper mapper;
	
	@RequestMapping(value = "/autoDownloads", method = RequestMethod.POST)
	@ResponseBody
	public String autoDownloads(HttpServletRequest request,@Valid @ModelAttribute("spiderRule") SpiderRule spiderRule,BindingResult errors) {
		mapper = ResultMapper.generateFailure();
		if(errors.hasErrors()){			
			mapper = WebUtils.getMapper4Errors(errors);
		}else{
			if(null != spiderRule && spiderRule.getSpiderRuleList().size() > 0){
				SpiderRuleRun.run(spiderRule.getSpiderRuleList().toArray(new SysSpiderRuleBean[spiderRule.getSpiderRuleList().size()]));
			}
		}
		
		return mapper.toJson();
	}
	@RequestMapping(value = "/autoDownload", method = RequestMethod.POST)
	@ResponseBody
	public String autoDownload(HttpServletRequest request,@Valid @ModelAttribute("sysSpiderRuleBean") SysSpiderRuleBean sysSpiderRuleBean,BindingResult errors) {
		mapper = ResultMapper.generateFailure();
		if(errors.hasErrors()){			
			mapper = WebUtils.getMapper4Errors(errors);
		}else{
			
			System.out.println("----");
		}
		
		return mapper.toJson();
	}
	/**
	*@Author Rambo
	*@Desc：保存对象
	*@param sysSpider
	*@param errors
	*@return TODO
	*@Version  SysSpiderController.java,v 1.1 2013-11-15 下午4:20:56 
	*/
	@RequestMapping(value = "/save", method = RequestMethod.POST)
	@ResponseBody
	public String save(HttpServletRequest request,@Valid @ModelAttribute("sysSpider") SysSpider sysSpider,BindingResult errors) {
		
		if(errors.hasErrors()){			
			mapper = WebUtils.getMapper4Errors(errors);
		}else{
			mapper = iSysSpiderService.save(sysSpider,request);
		}
		
		return mapper.toJson();
	}
	/**
	*@Author Rambo
	*@Desc：删除对象
	*@param docId
	*@param errors
	*@return TODO
	*@Version  SysSpiderController.java,v 1.1 2014-9-2 下午3:38:17 
	*/
	@RequestMapping(value = "/deleteX", method = RequestMethod.POST)
	@ResponseBody
	public String deleteX(@Valid @ModelAttribute("docId") String docId,BindingResult errors) {
		
		if(errors.hasErrors()){			
			mapper = WebUtils.getMapper4Errors(errors);
		}else{
			mapper = iSysSpiderService.delete(docId);
		}
		
		return mapper.toJson();
	}
	/**
	*@Author Rambo
	*@Desc：查看对象
	*@param docId
	*@param errors
	*@return TODO
	*@Version  SysSpiderController.java,v 1.1 2014-9-2 下午3:39:35 
	*/
	@RequestMapping(value = "/view", method = RequestMethod.GET)
	@ResponseBody
	public String view(@Valid @ModelAttribute("docId") String docId,BindingResult errors) {
		ResultMapper mapperRtn = ResultMapper.generateFailure();
		if(errors.hasErrors()){			
			mapperRtn = WebUtils.getMapper4Errors(errors);
		}else{
			SysSpider sysSpider = iSysSpiderService.findById(docId);
			mapperRtn = ResultMapper.generateSuccess();
			mapperRtn.appendResult("data", sysSpider);
		}		
		return mapperRtn.toJson();
	}
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	@ResponseBody
	public String list(@ModelAttribute("fromDate") String fromDate,@ModelAttribute("toDate") String toDate,@Valid @ModelAttribute("sysSpider") SysSpider sysSpider,@Valid @ModelAttribute("pageBean") PageBean pageBean,BindingResult errors) {
		ResultMapper mapperRtn = ResultMapper.generateFailure();
		if(errors.hasErrors()){			
			mapperRtn = WebUtils.getMapper4Errors(errors);
		}else{
			Map conditions = new HashMap();
			conditions.put("fromDate", fromDate);
			conditions.put("toDate", toDate);
			List  sysSpiders = iSysSpiderService.getPage(sysSpider, pageBean,conditions);
			int totalCount =  iSysSpiderService.getPageCount(sysSpider,conditions);
			Map map = new HashMap();
			map.put("pageNo", pageBean.getPageNo());
			map.put("pageSize", pageBean.getPageSize());
			map.put("totalCount", totalCount);
			map.put("listData",sysSpiders);
			
			mapperRtn = ResultMapper.generateSuccess();
			mapperRtn.appendResult("data", map);
		}		
		return mapperRtn.toJson();
	}
	/**
	*@Author Rambo
	*@Desc：状态修改
	*@param request
	*@param docId
	*@param docStatus
	*@param errors
	*@return TODO
	*@Version  CateController.java,v 1.1 2014-9-11 上午10:06:04 
	*/
	@RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
	@ResponseBody
	public String updateStatus(HttpServletRequest request,@Valid @ModelAttribute("docId") String docId,@Valid @ModelAttribute("docStatus") String docStatus,BindingResult errors) {
		
		if(errors.hasErrors()){			
			mapper = WebUtils.getMapper4Errors(errors);
		}else{
			if(!StringUtils.isStringEmpty(docId)){
				SysSpider sysSpider = new SysSpider();
				
				sysSpider.setDocId(docId);
				sysSpider.setDocStatus(docStatus);
				mapper = iSysSpiderService.save(sysSpider,request);
			}else{
				mapper = ResultMapper.generateFailure();
				mapper.appendResult("messages", "无法找到该ID!");
			}
			
		}
		
		return mapper.toJson();
	}
}